package com.mall.service.authority.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mall.commons.common.CommonPage;
import com.mall.commons.common.CommonResult;
import com.mall.model.domain.UmsMenu;
import com.mall.model.domain.UmsResource;
import com.mall.model.domain.UmsRole;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author Pan Rundong
 * @Date 2023-03-12 11:48
 * @Desc 角色Servicec
 */
public interface RoleService extends IService<UmsRole> {
    /**
     * 给角色分配菜单
     *
     * @param menuIds
     * @param roleId
     * @return void
     * @Author Pan Rundong
     */
    void allocMenu(List<Long> menuIds, Long roleId);

    /**
     * 分页获取角色信息
     *
     * @param pageNum
     * @param pageSize
     * @param keyword
     * @return com.mall.commons.common.CommonPage<com.mall.model.domain.UmsRole>
     * @Author Pan Rundong
     */
    CommonPage<UmsRole> findByPage(Integer pageNum, Integer pageSize, String keyword);

    /**
     * 给角色分配资源
     *
     * @param menuIds
     * @param roleId
     * @return void
     * @Author Pan Rundong
     */
    void allocResource(List<Long> menuIds, Long roleId);

    /**
     * 添加角色
     *
     * @param umsRole
     * @return java.lang.Boolean
     * @Author Pan Rundong
     */
    Boolean checkAndSave(UmsRole umsRole);

    /**
     * 更新角色
     *
     * @param id
     * @param umsRole
     * @return java.lang.Boolean
     * @Author Pan Rundong
     */
    Boolean checkAndUpdate(Long id, UmsRole umsRole);

    /**
     * 批量删除角色
     *
     * @param ids
     * @return void
     * @Author Pan Rundong
     */
    CommonResult<String> deleteByIds(List<Long> ids);

    /**
     * 根据用户Id查询菜单
     *
     * @param roleId
     * @return java.util.List<com.mall.model.domain.UmsMenu>
     * @Author Pan Rundong
     */
    List<UmsMenu> listMenu(Long roleId);

    /**
     * 根据用户Id查询后台资源
     *
     * @param roleId
     * @return java.util.List<com.mall.model.domain.UmsResource>
     * @Author Pan Rundong
     */
    List<UmsResource> listResource(Long roleId);

    /**
     * 修改角色状态
     *
     * @param id
     * @param status
     * @return void
     * @Author Pan Rundong
     */
    void updateStatus(Long id, Integer status);
}
